# Author    :Dun_Hz
# Time      :2024/7/26 11:35
# 汉诺塔问题

i = 1
# 定义移动操作，将第n个盘子从a移动到c上
def move(n, a, c):
    global i
    # print("第{}步，将第{}个盘子从{} --> {}".format(i,n,a,c))
    print("第%d步：将第%d个盘子从%s --> %s" %(i,n,a,c))
    i += 1

# 定义hanoi问题，将n个盘子从A经过B移动到C上
# ① n-1个盘子从A经过C移动到B上
# ② 移动第n个盘子从A直接到C
# ③ n-1个盘子从B经过A移动到C上
def hanoi(n,A,B,C):
    if n==1:        # 递归终止条件
        move(1,A,C)
    else:
        hanoi(n-1,A,C,B)
        move(n,A,C)
        hanoi(n-1,B,A,C)

if __name__ == "__main__":
    hanoi(4,'A','B','C')